<script setup>
    import CartCard from '@/components/CartCard.vue'
import { computed, ref } from 'vue'
    import {useRoute,useRouter} from 'vue-router'
    import {useCartStore} from '@/stores/cart.js'
    import {useUserStore} from '@/stores/user.js'
    import {useOrderStore} from '@/stores/order.js'

    const Cart = useCartStore()
    const route = useRoute()
    const router = useRouter()
    const user = useUserStore()
    const order = useOrderStore()

    const shopCart = Cart.cartList.find((item)=> item.name ==route.query.shopName)
    const checkedShopCartList = computed(()=>{
        return shopCart.list.filter((item)=> item.checked)
    })

    const totalPrice = computed(()=>{
        return checkedShopCartList.value.reduce((sum,item)=> sum+=item.number*item.price,0).toFixed(2)
    })

    const totalCount = computed(()=>{
        return checkedShopCartList.value.reduce((sum,item)=> sum += item.number,0)
    })

    const chooseAddress = ()=>{
        router.push({
            path:'/address'
        })
    }

    const currentAddress = computed(()=>{
        return user.currentUserInfo.currentAddress
    })


    const showMask = ref(false)

    const confirmOrder = ()=>{
        let newOrder = {
            status:'已下单',
            shopCart:shopCart,
            totalPrice:totalPrice.value,
            totalCount:totalCount.value
        }
        order.orderList.push(newOrder)
        router.push({path: '/order'}).then(() => {
        shopCart.list.forEach(item => item.number = 0)
        Cart.cartList = Cart.cartList.filter(item => item != shopCart)
    })
    }
</script>

<template>
    <div class="order_confirmation">
        <div class="order_confirmation_header">
            <div class="order_confirmation_header_title">
                <span class="iconfont title_back">&#xe697;</span>
                <div class="title_text">确定订单</div>
            </div>
            <div class="order_confirmation_header_address">
                <div class="address_title">收货地址</div>
                <div class="current_address" @click="chooseAddress">
                    <div class="current_address_info" v-if="currentAddress">
                        <div>{{currentAddress.address_text}}</div>
                        <div>{{currentAddress.name}} {{currentAddress.phone}}</div>
                    </div>
                    <div class="current_address_info" v-else>暂无收货地址</div>
                    <div class="iconfont current_address_icon" >&#xe697;</div>
                </div>
            </div>
        </div>
        <div class="order_confirmation_content">
            <CartCard :shopCart="shopCart"  />
        </div>
        <div class="order_confirmation_footer">
            <div class="total_price">实付金额: <b>￥{{totalPrice}}</b></div>
            <div class="submit" v-if="currentAddress" @click="showMask = !showMask">提交订单</div>
        </div>
        <!-- 蒙层 -->
        <div class="mask" v-if="showMask" @click="showMask = !showMask">
            <div class="mask_content">
                <div class="mask_content_title">确认要离开收银台?</div>
                <div class="mask_content_desc">请尽快完成支付,否则将被取消</div>
                <div class="mask_content_btn">
                    <div class="btn cancel">取消订单</div>
                    <div class="btn confirm" @click="confirmOrder">确定支付</div>
                </div>
            </div>
        </div>
    </div>  
</template>

<style lang="scss" scoped>
@import "@/style/viriables.scss";
.order_confirmation {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    background-color: #eee;

    &_header {
        padding: .18rem;
        height: 1.6rem;
        background-image: linear-gradient(0deg, rgba(0, 145, 255, 0.00) 4%, #0091FF 50%);
        background-size: 100% 1.6rem;
        background-repeat: no-repeat;
        
        &_title {
            display: flex;
            color: $bgColor;
            
            .title_back {
                font-size: .22rem;
            }
            .title_text {
                flex: 1;
                text-align: center;
                font-size: .16rem;
            }
        }
        &_address {
            padding: .18rem;
            background-color: $bgColor;
            margin-top: .28rem;
            line-height: .22rem;
            font-size: .16rem;
            color: $content_fontcolor;
            border-radius: .04rem;
            .address_title {
                margin-bottom: .18rem;
            }
            .current_address {
                display: flex;
                justify-content: space-between;

                &_info {
                    div:last-child {
                        font-size: .12rem;
                    }
                }

                &_icon {
                    transform: rotate(180deg);
                    margin-right: .08rem;
                    display: flex;
                    flex-direction: column;
                    justify-content: center;
                }
            }
        }
    }

    &_content {
        width: 100%;
        position: absolute;
        top: 2rem;
        bottom: .5rem;
        box-sizing: border-box;
        overflow-y: scroll;
    }

    &_footer {
        height: .5rem;
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: $bgColor;
        line-height: .5rem;
        display: flex;
        
        .total_price {
            flex: 1;
            padding-left: .18rem;
        }
        .submit {
            width: 1rem;
            height: .5rem;
            background-color: $btn-bgColor;
            color: $bgColor;
            text-align: center;
            font-size: .14rem;
        }
    }

    // 蒙层
    .mask {
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        z-index: 999;
        background-color: rgba($color: #000000, $alpha: .5);
        display: flex;
        justify-content: center;
        align-items: center;

        &_content {
            width: 80%;
            padding: .24rem;
            box-sizing: border-box;
            background-color: $bgColor;
            border-radius: .04rem;
            text-align: center;

            &_title {
                font-size: .18rem;
                font-weight: bold;
                color: $content_fontcolor;
            }
            &_desc {
                margin: .12rem 0;
                line-height: .2rem;
                font-size: .14rem;
                color: $medium-fontColor;
            }
            &_btn {
                display: flex;
                justify-content: center;

                .btn {
                    width: .8rem;
                    height: .32rem;
                    border-radius: .24rem;
                    font-size: .14rem;
                    line-height: .32rem;
                }
                .cancel {
                    margin-right: .12rem;
                    border: solid .01rem $btn-bgColor;
                    color: $btn-bgColor;
                }
                .confirm {
                    background-color: $btn-bgColor;
                    color: $bgColor;
                }
            }
        }
    }
}

</style>